package cn.com.gridinfo.sooc.core.course.discuss.activity;

import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.text.Html;
import android.view.View;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;

import com.jeremy.arad.utils.Log;
import com.jeremy.arad.utils.StringUtils;
import com.marshalchen.ultimaterecyclerview.UltimateRecyclerView;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
import cn.com.gridinfo.sooc.R;
import cn.com.gridinfo.sooc.base.BaseSoocActivity;
import cn.com.gridinfo.sooc.core.course.discuss.adapter.DiscussInfoAdapter;
import cn.com.gridinfo.sooc.core.course.note.common.CodeConst;
import cn.com.gridinfo.sooc.core.course.note.dao.CourseDao;
import cn.com.gridinfo.sooc.core.expand.callname.common.PageConst;
import cn.com.gridinfo.sooc.utils.DateUtil;
import cn.com.gridinfo.sooc.utils.MessageUtils;
import cn.com.gridinfo.sooc.utils.widget.textview.HtmlImageGetterUtil;

/**
 * 讨论详情界面
 * Created by yingchunli on 2016/1/6.
 */
public class DiscussInfoActivity extends BaseSoocActivity {

    @InjectView(R.id.input_name_dicuss_info)
    TextView input_name;//发布人
    @InjectView(R.id.time_discuss_info)
    TextView input_time;//发布时间
    @InjectView(R.id.hfts_discuss_info)
    TextView hfts;//回复条数
    @InjectView(R.id.tlnr_discuss_info)
    TextView tlnr;//讨论内容
    @InjectView(R.id.chuchu_discuss_info)
    TextView mlmc;//目录名称
    @InjectView(R.id.hfnr_list)
    UltimateRecyclerView hfnrList;//回复列表
    @InjectView(R.id.discuss_nr)
    EditText etHf;//回复讨论输入框
    @InjectView(R.id.btn_send_discuss)
    TextView btnSend;//发表回复内容
    DiscussInfoAdapter adapter;//适配器
    LinearLayoutManager linearLayoutManager;//布局管理器
    int maxLastPositon;//最后分页位置
    String tlid;//讨论id
    CourseDao dao;
    private String id = "0";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.course_discuss_info);
        ButterKnife.inject(this);
        dao = new CourseDao(this);
        tlid = getIntent().getStringExtra("tlid");
        //初始化listview
        linearLayoutManager = new LinearLayoutManager(this);
        hfnrList.setLayoutManager(linearLayoutManager);

        //发送请求 获取列表
        PageConst.pageNo = 1;
        PageConst.pageSize = 10;
        dao.getCourseDiscussInfo(tlid, PageConst.pageNo, PageConst.pageSize, CodeConst.COURSE_GET_COURSE_DISCUSSINFO_FIRST);
    }

    /**
     * 初始化列表数据
     */
    private void initView() {
        adapter = new DiscussInfoAdapter(dao.getDiscuss().getHfnr(), this);
        hfnrList.setAdapter(adapter);
        hfnrList.enableLoadmore();

        hfnrList.setDefaultOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                //下拉刷新 账户明细数据
                PageConst.pageNo = 1;//首页
                dao.getCourseDiscussInfo(tlid, PageConst.pageNo, PageConst.pageSize, CodeConst.COURSE_GET_COURSE_DISCUSSINFO_PUSHDOWN);
                linearLayoutManager.scrollToPosition(0);
            }
        });
        hfnrList.setOnLoadMoreListener(new UltimateRecyclerView.OnLoadMoreListener() {
            @Override
            public void loadMore(final int itemsCount, final int maxLastVisiblePosition) {
                if (itemsCount > (PageConst.pageSize - 1)) {
                    maxLastPositon = maxLastVisiblePosition;
                    dao.getCourseDiscussInfo(tlid, ++PageConst.pageNo, PageConst.pageSize, CodeConst.COURSE_GET_COURSE_DISCUSSINFO_PULLUP);
                } else {
                    adapter.loadNoDataView();
                    linearLayoutManager.scrollToPositionWithOffset(maxLastVisiblePosition, -1);
                }
            }
        });
        adapter.setmOnItemClickLitener(new DiscussInfoAdapter.OnItemClickListener() {
            @Override
            public void OnItemClick(View view, int position) {
                //设置回复人
                etHf.setHint("回复" + adapter.getObject(position).getTo_name() + "：");
                id = adapter.getObject(position).getId();
            }
        });
//        hfnrList.setRefreshing(false);//没有下拉刷新
    }

    @OnClick(R.id.btn_send_discuss)
    void sendHfnr() {
        //回复讨论
        String content = etHf.getText().toString().trim();
        if (!StringUtils.isNull(content)) {

            dao.hfDiscuss(tlid, id, content, CodeConst.COURSE_GET_COURSE_REPLY_DISCUSS);

            //隐藏软键盘
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(etHf.getWindowToken(), 0);
            //发送请求 获取列表
            id = "0";
            etHf.setText(null);
            etHf.setHint(null);
        } else {
            MessageUtils.showImageShortToast(this, "请输入要回复的内容");
        }
    }

    @Override
    public void onRequestSuccess(int requestCode) {
//        try {
        if (dao.getStatus().equals("0")) {
            switch (requestCode) {
                case CodeConst.COURSE_GET_COURSE_DISCUSSINFO_FIRST://获取列表数据  首次请求
                    initView();
                    if (!StringUtils.isNull(dao.getDiscuss().getMlmc())) {
                        //节名称不为空，显示节名称

                        mlmc.setText("\""+dao.getDiscuss().getMlmc()+"\"");
                    } else {
                        //节名称为空，显示章名称
                        mlmc.setText("\""+dao.getDiscuss().getKcmc()+"\"");
                    }
                    hfts.setText(dao.getDiscuss().getHfts());
                    tlnr.setText(dao.getDiscuss().getTlnr());
                    input_time.setText(dao.getDiscuss().getTime_show());
                    input_name.setText(dao.getDiscuss().getName());
                    Log.d("获取列表数据  首次请求    success");
                    break;
                case CodeConst.COURSE_GET_COURSE_DISCUSSINFO_PULLUP://获取列表数据  上拉请求
                    if (dao.getDiscuss().getHfnr() != null && !dao.getDiscuss().getHfnr().isEmpty()) {
                        //加载更多
                        adapter.loadmore(dao.getDiscuss().getHfnr());
                    } else {
                        //无数据则不显示下一页
                        adapter.loadNoDataView();
                        linearLayoutManager.scrollToPositionWithOffset(maxLastPositon, -1);
                    }
                    break;
                case CodeConst.COURSE_GET_COURSE_DISCUSSINFO_PUSHDOWN:
//                    if (dao.getDiscussList() != null && !dao.getDiscussList().isEmpty()) {
//                        hfnrList.hideEmptyView();
//                    } else {
//                        //无数据处理
////                        showNoData(NO_DATA);
//                        hfnrList.s
//                    }
                    //上拉刷新
                    hfnrList.setRefreshing(false);//没有下拉刷新
                    //刷新数据
                    adapter.refresh(dao.getDiscuss().getHfnr());
                    hfts.setText(dao.getDiscuss().getHfts());//刷新回复条数
                    if (dao.getDiscuss().getHfnr().size() > (PageConst.pageSize - 1))
                        //数据大于每页显示的条数,则加载更多数据
                        adapter.loadMoreDataView();
                    else {
                        //数据小于当前页的话则不显示加载更多,显示没有更多了
                        adapter.loadNoDataView();
                        linearLayoutManager.scrollToPositionWithOffset(maxLastPositon, -1);
                    }
                    break;
                case CodeConst.COURSE_GET_COURSE_REPLY_DISCUSS:
                    MessageUtils.showRightImageShortToast(this, "回复成功");

                    PageConst.pageNo = 1;
                    dao.getCourseDiscussInfo(tlid, PageConst.pageNo, PageConst.pageSize, CodeConst.COURSE_GET_COURSE_DISCUSSINFO_PUSHDOWN);
                    linearLayoutManager.scrollToPosition(0);
                    break;
            }
        } else {
            MessageUtils.showImageShortToast(this, dao.getStatusCode());
        }
//        } catch (Exception e) {
//            MessageUtils.showImageShortToast(this, "请求数据异常");
//        }
    }

    @Override
    public String setupToolBarTitle() {
        return "讨论详情";
    }

    @Override
    public boolean setupToolBarLeftButton(ImageView leftButton) {
        return true;
    }

    @OnClick(R.id.toolbar_leftbtn)
    void onClick() {
        finish();
    }

}
